﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;

namespace AvaProvi
{
    [Serializable]
    public class clsTipoDrenaje_CRN:clsEstado, IControlEstados
    {
        public string Tipo { get; set; }
        public int IdDrenaje { get; set; }
        public clsInfraestructura_CRN Infraestructura { get; set; }

        public clsTipoDrenaje_CRN(clsInfraestructura_CRN objInfraestructura):base()
        {
            this.Infraestructura = objInfraestructura;
            this.Tipo = string.Empty;
        }

        #region Métodos de clase

        public bool Guardar()
        {
            if (this.DatosValidos())
            {
                if (this.EsNuevo)
                    return CreaNuevoTipoDrenaje();
                else
                {
                    if (this.EsModificado)
                        return ModificaTipoDrenaje();
                    else
                        return EliminaTipoDrenaje();
                }
            }
            return false;
        }

        private bool EliminaTipoDrenaje()
        {
            clsTipoDrenaje_CD objTipoDrenaje_CD = new clsTipoDrenaje_CD();
            return objTipoDrenaje_CD.EliminaTipoDrenaje(this);
        }

        private bool ModificaTipoDrenaje()
        {
            clsTipoDrenaje_CD objTipoDrenaje_CD = new clsTipoDrenaje_CD();
            return objTipoDrenaje_CD.ModificaTipoDrenaje(this);
        }

        private bool CreaNuevoTipoDrenaje()
        {
            clsTipoDrenaje_CD objTipoDrenaje_CD = new clsTipoDrenaje_CD();
            return objTipoDrenaje_CD.CreaTipoDrenaje(this);
        }

        public bool DatosValidos()
        {
            return true;
        }

        public static BindingList<clsTipoDrenaje_CRN> RecuperaTiposDeDrenaje(clsInfraestructura_CRN objInfraestructura)
        {
            BindingList<clsTipoDrenaje_CRN> blTipos = new BindingList<clsTipoDrenaje_CRN>();
            clsTipoDrenaje_CD objTipoDrenaje_CD = new clsTipoDrenaje_CD();
            BindingList<dsInmoviliario.TiposDrenajeRow> blTiposRecuperados = objTipoDrenaje_CD.RecuperaTiposDeDrenaje(objInfraestructura.Inmueble.Avaluo.IdAvaluo);
            foreach (dsInmoviliario.TiposDrenajeRow filaTipo in blTiposRecuperados)
            {
                clsTipoDrenaje_CRN objTipoDrenaje = new clsTipoDrenaje_CRN(objInfraestructura);
                objTipoDrenaje.EsModificado = true;
                objTipoDrenaje.IdDrenaje = filaTipo.TdrenajeID;
                objTipoDrenaje.Tipo = filaTipo.Tipo;
                blTipos.Add(objTipoDrenaje);
            }
            return blTipos;
        }
        #endregion
    }
}
